<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        什么是闭包：让作用于外能够获取作用域内的变量 =>在函数内部返回另外一个函数 返回的函数使用了返回他的函数内部的变量
        是变量的引用始终不为0所以垃圾回收机制不会触发 （长存储）
     -->
    <script>
        // function fn(){
        //     var num = 0
        //     num = num + 1
        //     return num
        // }

        // console.log(fn()) // 1
        // console.log(fn()) // 1
        // console.log(fn()) // 1

        function fn() {
            var num = 0
            return function() {
                num++
                return num
            }
        }
        var fn2 = fn()
        // console.log(fn2()) // 1
        // console.log(fn2()) // 2
        // console.log(fn2()) // 3
        // 闭包可以保持变量不会被垃圾回收机制回收（长存储）
        // 导致变量一直占用内存 在ie中会导致内存泄漏
        // 避免全局变量污染环境
    </script>
</body>
</html>